home *** CD-ROM | disk | FTP | other *** search
- program AbsoluteDemo;
-
- {$X+}
-
- const
- IOMem = $f0000000;
-
- var
- Mem: array [0 .. High (Cardinal)] of Byte absolute 0;
-
- { This address has no actual meaning }
- MyPort: Byte absolute IOMem + $c030;
-
- { Beware: Using any of the variables above will crash
- your program unless you know exactly what you do!
- That's why GPC warns about it without the $X+ directive. }
-
- var
- x: Real;
- a: array [1 .. SizeOf (Real)] of Byte absolute x;
- i: Integer;
- b: Byte absolute a [i]; { GNU extension: non-constant memory reference. }
-
- begin
- x := 3.14;
-
- { Look at the internal representation of a real variable. }
- for i := 1 to SizeOf (Real) do
- Write (a [i] : 4);
- WriteLn;
-
- { The same again, more ugly... }
- for i := 1 to SizeOf (Real) do
- Write (b : 4);
- WriteLn;
-
- { And yes, there's an even more ugly way to do it... }
- for i := 1 to SizeOf (Real) do
- Write (Mem [PtrCard (@x) + i - 1] : 4);
- WriteLn
- end.
-